{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys,copy,os,inspect\n",
    "if hasattr(sys.modules[__name__], '__file__'):\n",
    "    _file_name = __file__\n",
    "else:\n",
    "    _file_name = inspect.getfile(inspect.currentframe())\n",
    "CURRENT_FILE_PATH = os.path.dirname(_file_name)\n",
    "sys.path.append(os.getcwd()+\"/../neuronVis\")\n",
    "\n",
    "import IONData,Scene\n",
    "import NeuronProcess\n",
    "import matplotlib\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "matplotlib.use('module://matplotlib_inline.backend_inline')\n",
    "%matplotlib inline\n",
    "\n",
    "iondata = IONData.IONData()\n",
    "\n",
    "def regionSymmetry(properties):\n",
    "    leftProject = properties['projectleftregion']\n",
    "    if 'unknow' in leftProject:\n",
    "        del(leftProject['unknow'])\n",
    "    leftProject = {k: v for k, v in leftProject.items() if v > 0}\n",
    "\n",
    "    rightProject = properties['projectrightregion']\n",
    "    if 'unknow' in rightProject:\n",
    "        del(rightProject['unknow'])\n",
    "    rightProject = {k: v for k, v in rightProject.items() if v > 0}\n",
    "\n",
    "    setLeft = set(leftProject)\n",
    "    setRight=set(rightProject)\n",
    "    bothregion = setLeft & setRight\n",
    "    allregion =setLeft | setRight\n",
    "\n",
    "    return len(bothregion)/len(allregion)\n",
    "def isBilateral(neuron):\n",
    "    properties = iondata.getNeuronPropertyByID(neuron['sampleid'],neuron['name'])\n",
    "    leftProject = properties['projectleftregion']\n",
    "    rightProject = properties['projectrightregion']\n",
    "    leftCount=0\n",
    "    for region,length in leftProject.items():\n",
    "        if region!='unknow' and length>0:\n",
    "            leftCount+=1\n",
    "            break\n",
    "    rightCount=0\n",
    "    for region,length in rightProject.items():\n",
    "        if region!='unknow' and length>0:\n",
    "            rightCount+=1\n",
    "            break\n",
    "    if leftCount >0 and rightCount>0:\n",
    "        return True,regionSymmetry(properties)\n",
    "    else:\n",
    "        return False,0\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import Visual as nv\n",
    "import json\n",
    "neuronvis = nv.neuronVis(renderModel=1)\n",
    "#In[0] single neuron symmetry\n",
    "neurons =[]\n",
    "for i in range(1,15):\n",
    "    scenefile='../resource/scene/cluster'+str(i)+'_spcd20220628_spcd.nv'\n",
    "    neurons+= Scene.scene2List(scenefile)\n",
    "bilateralNeurons=[]\n",
    "color = ['c', 'b', 'g', 'r', 'm', 'y', 'k', 'w']\n",
    "count=0\n",
    "neuronvis = nv.neuronVis(renderModel=0)\n",
    "neuronvis.render.setView()\n",
    "neuronvis.render.setBackgroundColor((0.0,0.20,0.5,1.0))\n",
    "for neuron in neurons:\n",
    "    res = isBilateral(neuron)\n",
    "    if res[0]:\n",
    "        bilateralNeurons.append([neuron,res[1]])\n",
    "        plt.scatter(count, res[1], c=color[1], edgecolors='r')\n",
    "        count+=1\n",
    "    if res[1]>0.25:\n",
    "        neuronvis.addNeuronByID(neuron['sampleid'],neuron['name'],color=[1,1,1])\n",
    "        neuronvis.render.savepng('../resource/symmetry/'+neuron['sampleid']+ neuron['name']+str(res[1])+'.png')\n",
    "        neuronvis.clear()\n",
    "plt.show()\n",
    "# print(bilateralNeurons)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAALICAYAAABiqwZ2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABU4UlEQVR4nO3de7hdZXnu/+9NAoaAgkrrAakRtbgRNUqUtoKi1oonRKuFbNqCdUutp2qrFUt/1t1aNy1aFbe1m6siqJSDiohIRa1QKCoYIBAO4gG1Bm3VImIkEpM8vz/mWDBYrsNM1lxjzLX8fq5rXpnzHWPMPHOxSJ686x3vnapCkiRJ0sAOfRcgSZIkjRMbZEmSJKnFBlmSJElqsUGWJEmSWmyQJUmSpBYbZEmSJKnFBlmSJElqsUGWJEmSWmyQJUmSpJal23R2Ml6xe1XpuwRJkiQtLtvWIC/dttMlSZKkhcYGWZIkSWpZ1A1ykmXAxcA9GHzWj1TVXyZ5CHAGcF/gCuD3qmpTknsAHwD2B/4bOLyqvtm81xuBlwBbgFdX1QXN+CHAu4AlwD9V1fEdfkS1rFq16lhgWd91qFM/XbNmjf/PSZJGalE3yMAdwFOrakOSHYF/T/IvwJ8A76iqM5L8I4PG973Nrz+sqoclOQL4W+DwJPsCRwCPBB4IfDbJrza/x3uApwPrgS8lObeqru/yQ+pOy9asWfPmvotQd1atWvXmvmuQJC0+i7pBrqoCNjQvd2weBTwV+J/N+KnAmxk0yM9rngN8BPi/SdKMn1FVdwDfSPI14AnNeV+rqpsAkpzRnGuDLEmStEAt6AY5yTHAMa2hk6rqpEnnLGGwjOJhDGZ7vw7cWlWbm1PWA3s2z/cEvg1QVZuT/IjBMow9gS+23rZ9zbcnjR8wx48lSZKkHi3oBrlphk+a5ZwtwMokuwMfAx7RQWmSJElaoBZ0g7wtqurWJBcCvw7snmRpM4v8IODm5rSbgb2A9UmWArsxuFlvYnxC+5rpxiVJkrQAbVuS3tKl4/WYRZJfamaOSbIzg5vpbgAuBF7YnHYU8PHm+bnNa5rjn2vWMZ8LHJHkHs0OGA8HLge+BDw8yUOS7MTgRr5zt+lrKkmSpLGy2GeQHwCc2qxD3gE4q6rOS3I9cEaStwBXAe9rzn8f8MHmJrxbGDS8VNV1Sc5icPPdZuAVzdINkrwSuIDBNm8nV9V13X08SZIkjdqibpCr6hrgsVOM38Rdu1C0x38KvGia9/ob4G+mGD8fOH/OxUqSJGksLOoGWZIkSdpWNsiSJElSiw2yJEmS1GKDLEmSJLXYIEuSJEktNsiSJElSiw2yJEmS1GKDLEmSJLXYIEuSJEktNsiSJElSiw2yJEmS1GKDLEmSJLXYIEuSJEktNsiSJElSiw2yJEmS1GKDLEmSJLXYIEuSJEktNsiSJElSiw2yJEmS1GKDLEmSJLXYIEuSJEktNsiSJElSiw2yJEmS1GKDLEmSJLXYIEuSJEktNsjSArVq1apjgWV919GzFatWrXpz30X06Kdr1qw5vu8iJGmxsUGWFq5la9aseXPfRag/v+D/OJCkeWODLEmSJLXYIEuSJEkt29bx7rDDPJUhSZIkjQdnkCVJkqQWG2RJkiSpZdvWTCxdOl6PWSTZK8mFSa5Pcl2SP27G75PkM0m+2vx672Y8SU5M8rUk1yR5XOu9jmrO/2qSo1rj+ydZ11xzYpJs09dUkiRJY2WxzyBvBv60qq5Mck/giiSfAY4G/rWqjk9yLHAs8AbgmcDDm8cBwHuBA5LcB/hLYBVQzfucW1U/bM55KXAZcD5wCPAvHX5GSZIkjdCibpCr6rvAd5vnP05yA7An8Dzg4Oa0U4GLGDTIzwM+UFUFfDHJ7kke0Jz7maq6BaBpsg9JchFwr6r6YjP+AeAwbJAlSZIWrAXdICc5BjimNXRSVZ00zbkrgMcymOm9X9M8A/wncL/m+Z7At1uXrW/GZhpfP8W4JEmSFqgF3SA3zfCUDXFbkl2BjwKvqarb2suEq6qS1PxVKUmSpIVkQTfIw0iyI4Pm+LSqOrsZ/q8kD6iq7zZLKL7XjN8M7NW6/EHN2M3ctSRjYvyiZvxBU5wvSZKkBWqx72IR4H3ADVX1961D5wITO1EcBXy8Nf77zW4Wvwb8qFmKcQHwW0nu3ex48VvABc2x25L8WvN7/X7rvSRJkrQALfYZ5CcCvwesS7K2Gftz4HjgrCQvAb4F/E5z7HzgWcDXgNuBFwNU1S1J/hr4UnPeX03csAe8HDgF2JnBzXneoCdJkrSALeoGuar+HZhuX+KnTXF+Aa+Y5r1OBk6eYnwNsN8cypQkSdIYWdQNsiRJkrStbJAlSZKkFhtkSQvCqlWrjgWW9V3HmFmxatWqN/ddxJj56Zo1a47vuwhJC5sNsqSFYtmaNWve3HcRGm/+g0HSKNggS5IkSS02yJIkSVKLDbIkSZLUYoMsSZIktdggS5IkSS02yJIkSVKLDbIkSZLUYoMsSb8gfkHCVhZ7eIpBKFIHtqnj3bI181XHdlmypO8KJGlBMWxlgVvkzb80NrapQd68eb7K2D42yJIkSRq1Bd0g3+MefVcgSZKkxWZBN8iSxtc8rHedj7WlrueUJP0cG2RJ82Xs17u6nlOSNBUbZEmSJKnFBlmSJElqsUGWJEmSWmyQJUmSpBYbZEmSJKnFBlmSJElqsUGWJEmSWmyQJUmSpBYbZEmSJKnFBlmStCjNQ9z5OJiPyPW+GfmusWODLElarMY+7lxGvms8bVODvHXrfJUhSZIkjQdnkCVJkqQWG2RJkiSpxQZZkiRJatlhW07evHm8HrNJcnKS7yW5tjV2nySfSfLV5td7N+NJcmKSryW5JsnjWtcc1Zz/1SRHtcb3T7KuuebEJNmWr6ckSZLGz6JukIFTgEMmjR0L/GtVPRz41+Y1wDOBhzePY4D3wqChBv4SOAB4AvCXE011c85LW9dN/r0kSZK0wCzqJRZVdXGSFZOGnwcc3Dw/FbgIeEMz/oGqKuCLSXZP8oDm3M9U1S0AST4DHJLkIuBeVfXFZvwDwGHAv8zfJ5IkSdJ8W9ANcpJjGMz2Tjipqk6a5bL7VdV3m+f/Cdyveb4n8O3WeeubsZnG108xriHM0wb+o95A383rJUn6BbSgG+SmGZ6tIZ7p+kpSIyxJwxv7DfzdvF6SpF9MC7pB3k7/leQBVfXdZgnF95rxm4G9Wuc9qBm7mbuWZEyMX9SMP2iK8yVJkrSA/SI2yOcCRwHHN79+vDX+yiRnMLgh70dNE30B8NbWjXm/Bbyxqm5JcluSXwMuA34feHeXH0SSpLZ5Wr4230a9PK4LLsFb5BZ1g5zkdAazv3skWc9gN4rjgbOSvAT4FvA7zennA88CvgbcDrwYoGmE/xr4UnPeX03csAe8nMFOGTszuDnPG/QkSX0a++Vri8ECbOi1jRZ1g1xVq6c59LQpzi3gFdO8z8nAyVOMrwH2m0uNkiRJGi+LukGWpIVsHn5c7k4vkjQEG2RJGl9j/eNyf8wsabGyQZYkSZJabJAlSZKkFhtkSZIkqcUGWZIkSWqxQZYkSQtSj8EofYabuHtMB2yQJUnSQjXWO73MB3eP6YYNsiRJktRigyxJkiS12CBLkiRJLTbIkiRJUosNsiRJktRigyxJkiS12CBLkiRJLTbIkiRJUosNsiRJktRigyxJkiS12CBLkiRJLTbIkiRJUosNsiRJ0jxZtWrVscCyEb7lilWrVr15hO/30zVr1hw/wvdbFGyQJUnqic3TL4Rla9aseXPfRUxnxN8vi4YNsiRJ/bF5ksaQDbIkSZLUYoMsSZIktdggS5IkSS02yJIkSVKLDbIkSZLUsk0N8tat81WGJEmSNB6cQZYkSZJabJAlSZKkFhtkSZIkqWVRN8hJDgHeBSwB/qmqjMuUJEnSjBZtg5xkCfAe4OnAeuBLSc6tquv7rUySJEnjbNE2yMATgK9V1U0ASc4AngfYIEuSJGlai7lB3hP4duv1euCAnmqRJEnSArFNDXIVma9CtkeSY4BjWkMnVdVJfdUjSZKkhW+bGuRx0zTD0zXENwN7tV4/qBmTJEmSprVD3wXMoy8BD0/ykCQ7AUcA5/ZckyRJksZcqqrvGuZNkmcB72SwzdvJVfU3/Va0cL34xYz9N8pnP9t3BTNbv77vCmb2B3/QdwUz+9CH+q5gdps29V2BpLnYb7++K5jdHnv0XcHMLrxwvJbjbq8FvcRiNlV1PnB+33VIkiRp4VjMSywkSZI0JpJcmOQZk8Zek+RfkmxMsrb1+P3m+DeTfLR1/guTnJLkxa1zNyVZ1zwfSSjcop5BliRJ0tg4ncE9YRe0xo4A/gzYq6pWTnPd/kn2bYe9VdX7gffDoIkGnlJVPxhVoc4gS5IkqQsfAZ7dbJ5AkhXAA7l7bsVU3g4cN7+l3Z0NsiRJkkYiyTFJ1rQed+ZVVNUtwOXAM5uhI4CzgAIeOmmJxUGttz0LeFySh3X1OVxiIUmSpJGYJaMC7lpm8fHm15c041+fYYnFFuAE4I3Av4ym0pk5gyxJkqSufBx4WpLHAcur6oohr/sg8CTuHgI3b2yQJUmS1Imq2gBcCJzMYDZ52Ot+BrwDeO08lXY3NsiSJEnq0unAY7h7gzx5DfKrp7jufXS0PHhRJ+lpdO597/FP0rvttr4rmNnWrX1XMLPly/uuYGa33953BZIWux2cNpyzLVsWR5Ke3wqSJElSiw2yJEmS1GKDLEmSpM4kOS7JdUmuadYbH5DkoiQ3Jrk6yaVJ9mnOnRifWJv8wi5qdB9kSZIkdSLJrwPPAR5XVXck2QPYqTl8ZFVNhIucABzaHu+yTmeQJUmS1JUHAD+oqjsAquoHVfWdSedcDHSWmjcVG2RJkiSNxExR041PA3sl+UqSf0jy5Cne5rnAutbr01pLLO47b8W3uMRCkiRJIzFb1HRVbUiyP3AQ8BTgzCTHNodPS7IR+CbwqtZlnS+xsEGWJElSZ6pqC3ARcFGSdcBRzaHOG+HpuMRCkiRJnUiyT5KHt4ZWAt/qqZxpOYMsSZKkruwKvDvJ7sBm4GvAMcBH+ixqMqOmNZQlS8Y/anrcI0I3b+67goVt3P/7wvjHiUvSfKsyalqSJEladGyQJUmS1JltSdJrzj8nyRe7rNEGWZIkSZ2YlKT3aOA3gW83h4+sqscApzJI0qNZq7w/sFuSvbuq0wZZkiRJXdnWJL0XAJ8AzgCO6KpIG2RJkiSNxDwk6a0GTm8eq+ev8rtzFwsNxV0s5s5dLOZm3P/7grtYSNIwu1gkWcJdSXp/CBwLHM1gdrmdpLcJuAx4SFVVkiuB36+qa+el+Bb3QZYkSVJnhk3SS/Iq4N7AN5IA3IvBLPJx813jApiTkSRJ0mKwjUl6q4FDqmpFVa1gcLNeJ+uQbZAlSZLUlV2BU5Ncn+QaYF/gzZNPSrICeDBw5/ZuVfUN4EdJDpjvIl2DrKEshDXIrv+UJKlfJulJkiRJi5A36UmSJKkTSbYw2MJtKXADcFRV3T7deF91OoMsSZKkrmysqpVVtR+DbdxeNst4L2yQJUmS1IdLuCsxb5jxztggS5IkqVNJlgLP5K7EvBnHu+YaZEmSJI1EEy3djpc+qapOar3eOcna5vklwPtmGe+F27xpKG7zJkmSZjPbNm9JNlTVrsOO98UlFpIkSVKLDbIkSZLU4hILDcUlFpIkaTaLJUnPm/Q0lHvdq+8KZvfTn/ZdwczGvb7ly/uuYGbj/vUD/5EmSYuFSywkSZKkFhtkSZIkdSLJ/ZL8c5KbklyR5AtJnp/k4CQ/SrK29fjN5ppK8vbWe7wuyZunef8No6jTBlmSJEnzLkmAc4CLq2rvqtofOAJ4UHPKJU3c9MTjs834HcALkuzRVa02yJIkSerCU4FNVfWPEwNV9a2qevcs120GTgJeO/lAkoc0s9DrkrxlVIXaIEuSJGkkkhyTZE3r0U7VeyRw5QyXHzRpicVDW8feAxyZZLdJ17wLeG9VPQr47mg+hbtYSJIkaUSaWOmTZj0RSPIe4EBgE/B6BkssnjPN+96W5APAq4GNrUNPBH67ef5B4G+3s/S7cQZZkiRJXbgOeNzEi6p6BfA04JeGvP6dwEuAXSaNjzyrwQZZkiRJXfgcsCzJH7XGht6Fv6puAc5i0CRPuJTBjX4AR865woYNsiRJkuZdDeKbDwOenOQbSS4HTgXe0JwyeQ3yC6d4m7cD7d0s/hh4RZJ1wJ6jqtWoaQ3liU8c/6jpcU9au3Km2xLGwGGH9V3BzM4/v+8KZrdpU98VSJqLJzyh7wpm9+Uv913BzH70o8URNe0MsiRJktRigyxJkqROzJR0l+SdSW5OskOSR7WWWtzSLMlYm+Sz010/Sm7zJkmSpF4l2QF4PvBt4MlVdSGwsjl2CnBeVX2kq3qcQZYkSVLfDmawDdx7gdX9lmKDLEmSpP6tBk4HPgY8O8mOfRZjgyxJkqSRmCVqerprdgKeBZxTVbcBlwHPmO9aZ+IaZEmSJI3EtkRNtzwD2B1YlwQG4SEbgfNGWtw2sEGWJElSn1YD/6uqTgdIsgvwjSTLq+r2PgpyiYUkSZK6sjzJ+tbjz4FDgE9OnFBVPwH+HXhuX0U6gyxJkqROVNVUk7NvneK8F7SeHz2fNU3FqGkNJRn/qOkdxvznIVu39l2BJEnzq8qoaUmSJGnRsUGWJElSZ5IclqSSPCLJZU2E9H8k+X4rXnpFkm8m+Wjruhc2qXrzzjXIkiRJ6tJqBjfhra6qAwCSHA2sqqpXTpzUbPm2f5J9q+r6Lgt0BlmSJEmdSLIrcCDwEuCIIS55O3DcvBY1BRtkSZIkjcQQSXrPAz5VVV8B/jvJ/rO85VnA45I8bF4KnoZLLCRJkjQSQyTprQbe1Tw/o3l9xQznbwFOAN4I/MsoahyGDbIkSZLmXZL7AE8FHpWkgCVAJXn9LJd+kEGDfO08l3gnl1hIkiSpCy8EPlhVD66qFVW1F/AN4KCZLqqqnwHvAF7bQY2ADbIkSZK6sRr42KSxjzbjs3kfHa58MElPQ9lxx/FP0hv3pLpxr0+SftH98i/3XcHsbr+97wpm9uMfm6QnSZIkLTo2yJIkSepEk6D3odbrpU2C3nnN66MnJeqtTbJvk6y3MclVSW5IcnkTLjIv3MVCkiRJXfkJsF+SnatqI/B04OZJ55zZTtQDSLIC+HpVPbZ5vTdwdpJU1ftHXaQzyJIkSerS+cCzm+ergdO39Q2q6ibgT4BXj7CuO9kgS5IkqUtnAEckWQY8Grhs0vHDJy2x2Hma97kSeMR8FOgSC0mSJI1EEy3djpc+qUnXu1NVXdMsmVjNYDZ5sqmWWEz5282t2unZIEuSJGkkhoiannAu8DbgYOC+2/nbPRa4YTuvnZENsiRJkrp2MnBrVa1LcvC2XtzMQL8NePdoyxqwQZYkSVKnqmo9cOI0hw9PcmDr9cuB7wAPTXIVsAz4MXBiVZ0yH/WZpKehmKQ3d+NenyT9ojNJb+4WS5KeDbKGkox/g7zDmO/JYoMsSVrsqhZHgzzmLYUkSZLULRtkSZIkdWKmqOkkL27tfbwpybrm+fFNBPXWJI9uXXttc7PeyNkgS5IkqSt3Rk03r++Mmq6q91fVyqpayeCmvKc0r49tzl0PHNdFkTbIkiRJ6tL2Rk2fBzwyyT7zUlWLDbIkSZJGIskxSda0HsdMcdpsUdPT2Qr8HfDnIyp3Wu6DLEmSpJEYJklviKjpmfwzcFySh2xfhcOxQZYkSVLXtitquqo2J3k78IZ5qguwQZYkSVL35hI1fQrwZ8A9R1zTnVyDLEmSpE5V1fqqmi5qerZrNzGIqZ637EOT9DSUPfcc/yS9W2/tu4KZ/fSnfVcws91377uCmd12W98VzG7z5r4rkDQXD3tY3xXM7gc/6LuCmf3whybpSZIkSYuODbIkSZI6kWRD8+uKJNdOcfyUJLcnuWdr7J1NAt8eXdVpgyxJkqRx8jXgeQBJdgCeSpO21xUbZEmSJI2TM4DDm+cHA5cCnd7lYYMsSZKkcfIV4JeS3JtBmMgZXRdggyxJkqSRGDJqehhnA0cABwCXjK7C4RgUIkmSpJEYJmp6SGcCVwCnVtXWpNvd42yQJUmSNFaq6ltJjgM+28fvb4MsSZKkPuyTZH3r9WvbB6vq/3Vcz51skCVJktSJqtq1+fWbwI5TnPLhaa5bMX9V/TyjpjWUnXce/6jppWP+z70NG/quYGY77dR3BTPbtKnvCiSpf8uW9V3BzDZuNGpakiRJWnTGfM5NkiRJi0WSLcA6Bj3oN4DfAy4A7gHcB9iZu1LzDmuWYnTOBlmSJEld2VhVKwGSnAq8oqoOaF4fDayqqlf2V96ASywkSZLUhy8Ae/ZdxFRskCVJkjQSwybpJVkCPA04t9sKh+MSC0mSJI3EEEl6OydZy2Dm+AbgM13Uta2cQZYkSVJXJtYgPxgI8Ip+y5maDbIkSZI6VVW3A68G/jTJ2K1osEGWJElS56rqKuAaYHXftUxmkp6Gkox/kt4OY/7Pva1b+65AkqT5VWWSniRJkrTo2CBLkiSpE0nul+Sfk9yU5IokX0jy/CQHJ/lRkrWtx28211SSt7fe43VJ3jyfddogS5Ikad4lCXAOcHFV7V1V+wNHAA9qTrmkqla2Hp9txu8AXpBkj65qtUGWJElSF54KbKqqf5wYqKpvVdW7Z7luM4O9lV/bHkyyW5JvJdmheb1Lkm8n2XGuhdogS5IkaSRmSdJ7JHDlDJcfNGmJxUNbx94DHJlkt4mBqvoRsBZ4cjP0HOCCqvrZXD/H2O07J0mSpIVpiCS9OyV5D3AgsAl4PYMlFs+Z5n1vS/IBBnsnb2wdOhM4HLiQwXKNf9j+6u/iDLIkSZK6cB3wuIkXVfUK4GnALw15/TuBlwC7tMbOBQ5Jch9gf+BzoyjUBlmSJEld+BywLMkftcaWD3txVd0CnMWgSZ4Y2wB8CXgXcF5VbRlFoTbIkiRJmnc1SKc7DHhykm8kuRw4FXhDc8rkNcgvnOJt3g5M3s3iTOB3m19HwiQ9DcUkvbkzSU+StNgtliQ9b9LTomEDKkmSRmHM59wkSZKkbtkgS5IkqRNJtkxaZ3xsM35RkhuTXJ3k0iT7tMZXdV2nSywkSZLUlY1VtXKaY0dW1US4yAnAod2VdXfOIEuSJGmcXAw8rM8CbJAlSZI0ErNETQPsPGmJxeFTvM1zgXUdlDstl1hIkiRpJIaImp5picVpSTYC3wReNeLStokNsiRJksbBkVW1pu8iwCUWkiRJ0t04gyxJkqSu7Jxkbev1p6rq2L6KmY5R0xrKQoialiRJ/VosUdMusZAkSZJaXGIhSZKkTiTZwmALt6XADcBRwCeB46vqgtZ5rwH2Aa4FXtp6i6XAI4F9q+qGeavTJRYahkssJEnSbGZbYpFkQ1Xt2jw/DbgC2AD8elW9uHXeF4E/q6qLJ13/VuBXqup3R158i0ssJEmS1IdLGCTmfQR4dpKdAJKsAB7YHL9TkicBvwO8fL4Ls0GWJEnSSAyRpDdx3lLgmcC6qroFuLx5DXAEcFa1ljkk2R04BTiqqm6bz88ALrHQkFxiIUmSZjPEEouJNcgwmCH+06ralORI4DlVtbrZBu4lVXVF67ozgBur6i/nqfS712mDrGHYIEuSpNlsyxrkSeO7AjcBhwBnVNWvto4dBbwMOKiqNo+45Cm5i4UkSZJ6VVUbklwInAycPjGeZG/grXTYHIMNsiRJksbD6cDHGKxBnvAGYDlwdnK3yelXVdXdbuIbJZdYaCgusZAkSbNZLEl6ziBrKDssgP1Otm7tuwLNJ78HJUldWQB/5UiSJEndsUGWJElSJ5JsSbI2ybVJPpxkeZILkzxj0nmvSfLeJCuSbGyuuT7JB5LsON912iBLkiSpKxuramVV7QdsYrB92+nc/cY8mtcTu1l8vapWAo8CHsQgTW9e2SBLkiSpD9sUNV1VWxgk7u0534XZIEuSJGkk5itqurlmGXAA8Kn5+wTN7+U2bxrGkiXjv82bOwgsbu5iIUnjb9RR081s8g3AjcBDgE9W1f+ctw/QcJs3SZIkdWVjs554so8D70jyOGB5VV3ROvb1qlqZZA/g0iSHVtW581nkApiTkSRJ0mJWVRuAn4uannTOD4BjgTfOdz02yJIkSRoHpwOPYZoGuXEOsDzJQfNZiGuQNZQddxz/NchLx3zB0LivT920qe8KZjbu/30BNm/uuwJJ6tdiiZp2BlmSJElqsUGWJElSJ5JUkg+1Xi9N8v0k5zWvj25er2099k3yiklj1zbv9T/mo84F8ENLSZIkLRI/AfZLsnNVbQSeDtw86Zwzq+qVk8auB94z8SLJW4G1VXXDfBTpDLIkSZK6dD7w7Ob5ama+Ke/nJHkSg7jpl4+4rjvZIEuSJGkkhkzSOwM4oknGezRw2aTjh09aTrFz6/13B04Bjqqq2+bpY7jEQpIkSaNRVScBJ81yzjVNQt5qBrPJk021xGLCPwIfrKpL51ToLGyQJUmS1LVzgbcBBwP3HeaCJEcBDwZ+d/7KGrBBliRJUtdOBm6tqnVJDp7t5CR7A28FDqqqed913gZZkiRJnaqq9cCJ0xw+PMmBrdcvB44ClgNnJ3fLInlVVV0y6vpM0tNQTNKbO5P05mbc//uCSXqStFiS9BbAXzkaB4cc0ncFs/va1/quYGbf/GbfFcxs3337rmBmt97adwWz+853+q5gZjuM+b5F4/6PSM3duH8P3uc+fVcwuwc+sO8KfjGM+beqJEmS1C1nkCVJktSJJBuqatdJYxcA92sN/TLw7ao6oNPiWmyQJUmS1JuqesbE8yS7AFcAf9FfRS6xkCRJ0vh4F3B+VX2mzyKcQZYkSdJINNHS7Xjpk5p0vWGufQGwCuhtacUEG2RJkiSNxDBR01NJsieD2eNnVNUdIy9sG7nEQpIkSb3JIPnjVOD4qrq+73rABlmSJEn9eh3w06p6T9+FTHCJhSRJkrqyPMn61uu/B94CrE+ytjX+w6p6SqeVtRg1raF8+MPjHzX96U/3XcHMzjuv7wpmtscefVcws5tu6ruC2d1+e98VSFK/FkvUtEssJEmSpBYbZEmSJHUiSSX5UOv10iTfT3Je8/ro5vXaJNcl+UiS5V3XaYMsSZKkrvwE2C/Jzs3rpwM3TzrnzKpaWVWPBDYBh3dZINggS5IkqVvnA89unq8GTp/qpCRLgV2AHzavX5Tk2iRXJ7m4GVuS5IQkX0pyTZI/bMYPTnJRMwP95SSnNdvJDcUGWZIkSSOR5Jgka1qPY6Y47QzgiCTLgEcDl006fnizo8XNwH2ATzTjb2IQJPIY4NBm7CXAj6rq8cDjgZcmeUhz7LHAa4B9gb2BJw77OWyQJUmSNBJVdVJVrWo9fi5Vr6quAVYwmD0+f4q3ObOqVgL3B9YBr2/GLwVOSfJSYEkz9lvA7zcN9WXAfYGHN8cur6r1VbUVWNv8nkOxQZYkSVLXzgXexjTLKwBqsBfxJ4AnNa9fBvwFsBdwRZL7AgFe1axZXllVD6mqiY1f25HVW9iG/A8bZEmSJHXtZOB/V9W6Wc47EPg6QJKHVtVlVfUm4PsMGuULgD9KsmNzzq8m2WWuxZmkJ0mSpE5V1XrgxGkOH57kQAYTueuBo5vxE5I8nMGs8b8CVwMTyzWubG7C+z5w2FzrM0lPQzFJb+5M0psbk/QkafwtliQ9G2QN5/DDx/8b5ayz+q5gRg+4/3h/Cb/7Hz/ru4QZXfC5HfsuYVaHHNJ3BTPbffe+K1j4br217woWtp126ruCmT3nOX1XMLtNm/quYGaf+MTiaJBdgyxJkiS12CBLkiSpE31GTSf582HPtUGWJElSV/qMmrZBliRJ0lja3qjpU5K8N8kXk9zUxEmfnOSGJKe0rludZF0TS/23zdjxwM7NzPRpsxVogyxJkqSRmOeoaYB7A78OvJZB2Mg7gEcCj0qyMskDgb8FngqsBB6f5LCqOhbY2MxMHznb57BBliRJ0kjMc9Q0wCeahL11wH9V1bomSvq65j0fD1xUVd+vqs3AaTRJfNvCBlmSJEld2+ao6cZEfPRW7h4lvZURBuDZIEuSJKlr2xw1PaTLgScn2SPJEgaz1P/WHPvZRCT1bIyaliRJUqe2M2p6mPf9bpJjgQsZRFJ/sqo+3hw+CbgmyZWzrUM2SU9D2XHH8Y+aHveEpnGPId51174rmNmyZX1XMLsf/KDvCha2HRbAzzS3bu27As2npQtg2nDca9y40SQ9SZIkadGxQZYkSVInRp2k12zt9qxR12mDLEmSpK6MOklvJWCDLEmSpAVte5P0XtSk412d5OIkOwF/RRMskuTwJE9I8oUkVyX5fJJ9tqdAG2RJkiSNxDwn6b0JeEZVPQY4tKo2NWMTM85nAl8GDqqqxzbH3ro9n2PM74WUJEnSQtEk5/1cet6kc65JsoKZk/RemSTAexgk6R0PXAqckuQs4Oxp3n434NQkDwcKGGrf48mcQZYkSVLXtjlJr6peBvwFsBdwRZL7TnHZXwMXVtV+wHOB7dok1BlkSZIkde1k4NaqWpfk4BnOuzNJL8lDq+oy4LIkz2TQKP8YuGfr/N2466a/o7e3OGeQJUmS1KmqWl9VMyXprU1yDfBYBrPCACckWZfkWuDzwNUMEvP2nbhJD/g74P8kuYo5TASbpKehmKQ3dybpzY1JeoufSXrq27in1MH417hYkvTG/MuscXHooX1XMLtNm/quYGbnndd3BTNbsaLvCmb2wAf2XcHsPv/5viuY2dFH913BzMb96wdw5ZV9V7Cwjfs/xDds6LuC2fmPtG4sgH+vS5IkSd1xBlmSJEmdSLIFWMegB70BOKqqxm4RojPIkiRJ6srGJtRjPwYx0i/ru6Cp2CBLkiSpD5cAD5s8mOTVSa5Pck2SM5qxXZKcnOTyJkb6ec340UnOTvKpJF9N8nejKMwlFpIkSRqJJlq6HS99UpOuN/m8pcAzgU9N8TbHAg+pqjuS7N6MHQd8rqr+oBm7PMlnm2MrGWwHdwdwY5J3V9W35/I5bJAlSZI0EkNETe+cZG3z/BLgfVOccw1wWpJzgHOasd8CDk3yuub1MuBXmuf/WlU/AkhyPfBgwAZZkiRJC8LGqlrZHkjyfgYzwN+pqmcBz2YQL/1c4LgkjwIC/HZV3Tjp2gMYzBxP2MII+lvXIEuSJKk3VfXi5sa9ZyXZAdirqi4E3sAgOnpX4ALgVUkCkOSx81mTM8iSJEkaF0uADyXZjcGs8YlVdWuSvwbeCVzTNNHfAJ4zX0UYNa2h7Lbb+EdN77133xXMbO3aviuY2bgn6Y17ChzAm9/cdwUz+7Vf67uCmd10U98VzO573+u7goVt9937rmBm4/7nIMAtt/Rdwcy+9a3FETXtEgtJkiSpxQZZkiRJnUiyJcnaJNcm+XCS5SN+/92TvHyu72ODLEmSpK7Md5Le7oANsiRJkhak6ZL0LkryjiRrktyQ5PFNWt5Xk7yldd6fNDPR1yZ5TTN8PPDQZpb6hO0tzF0sJEmSNBIjStID2FRVq5L8MfBxYH/gFuDrSd4BrABeDBzAYLeLy5L8G4MUvv0m77W8rWyQJUmSNBIjStIDOLf5dR1wXVV9FyDJTcBewIHAx6rqJ8342cBBrevmxAZZkiRJXRkmSQ/uSsfbyt2T8rbSQf/qGmRJkiT1pp2ktw2XXQIclmR5kl2A5zdjPwbuOdeabJAlSZK0oFTVlcApwOXAZcA/VdVVVfXfwKXNjXvbfZOeSXoayo47jn+S3k479V3BzG6/ve8KZrZsWd8VzOzRj+67gtldfnnfFcxshzGfEhn3+gA2b+67goVt3P8b3//+fVcwu1tv7buCmf3kJybpSZIkSYuODbIkSZLUYoMsSZKkTow6ajrJyiTbcnPfUGyQJUmS1JVRR02vBGyQJUmStChMFzX96iTXJ7kmyRnN2BOSfCHJVUk+n2SfJDsBfwUc3sxKHz6qwgwKkSRJ0kiMKGr6WOAhVXVHkt2bsS8DB1XV5iS/Cby1qn47yZuAVVX1ylF+DhtkSZIkjcSIoqavAU5Lcg5wTjO2G3BqkocDBew4inqnY4MsSZKkrgwTNf1s4EnAc4HjkjwK+Gvgwqp6fpIVwEXzWaQNsiRJknpTVS+eeJ5kB2Cvqrowyb8DRwC7MphBvrk57ejW5SOJlp7Mm/QkSZI0LpYAH0qyDrgKOLGqbgX+Dvg/Sa7i7hO8FwL7jvomPaOmNZQlS8Y/anr5nHZSnH8bNvRdwczGPWp6IbjXvfquYGbjHqP75S/3XcHsNm3quwL9ohv3uO4tW4yaliRJkhYdG2RJkiR1Ikkl+VDr9dIk309yXpJHJvlKkp1bxz+ZZHXXddogS5IkqSs/AfZrNcFPp7n5rqquA84GjgNIchiwY1Wd3nWRNsiSJEnq0vkMtnIDWA20G+C/Al6UZCVwPPCK9oVJliQ5Jcm1SdYleW0z/tAkn0pyRZJLkjyiGT8lyYlN+t5NSV44TIE2yJIkSRqJJMckWdN6HDPFaWcARyRZBjwauGziQFXdDrwOuBg4o6q+OunalcCeVbVfVT0KeH8zfhLwqqrav7n+H1rXPAA4EHgOg6Z7Vu6DLEmSpJEYIkmPqrqmCftYzWA2efLxTyS5lbs3uRNuAvZO8m7gk8Cnk+wK/Abw4eTOTTTu0brmnKraClyf5H7DfA4bZEmSJHXtXOBtwMHAfac4vhXYmmQJcMXENVX1piSPAZ4BvAz4HeA1wK2TE/pa7mg9H2obOhtkSZIkde1kBk3tuiQHT3dSVW1hsKwCgCR7AJuq6qNJbgQ+VFW3JflGkhdV1YczmEZ+dFVdvb3F2SBLkiSpU1W1HjhxOy7dE3h/E0kN8Mbm1yOB9yb5C2BHBuuct7tBNklPQ3nUo8Y/Se+QQ/quYGZve1vfFczswAP7rmBmb3pT3xXMbt99+65gZnt+50t9lzCj57/18X2XMKtzzum7goXtZS/ru4KZLYSkxP/8z74rmNknP2mSniRJkrTo2CBLkiSpE30n6SVZmeRZs51ngyxJkqSu9J2ktxKwQZYkSdJY2e4kPYAkG5KckOS6JJ9N8oQkFzVJeYc25yxL8v4mbe+qJE9JslPz/ocnWZvk8OkKtEGWJElSl+aSpAewC/C5qnok8GPgLQxmop/PoAGGQWNdTdreauBUBn3vm4Azq2plVZ05XYE2yJIkSRqJYaKmq+oaYAUzJOkBtzJ1kh7AJuBTzfN1wL9V1c+a5yua8QOBDzXv92XgW8CvDvs53AdZkiRJIzFM1HRju5P0gJ/VXfsUb6VJyquqrUlG0tvaIEuSJKlr25Wktw0uYRAe8rkkvwr8CnAj8HDgnrNd7BILSZIkdaqq1lfV9iTpDesfgB2SrAPOBI6uqjuAC4F9Z7tJzxlkSZIkdaKqdp1i7CLgokljK4Z5j6p681THquqnwIunuPYWYNbYTqOmNZRk/KOmtbjtsAB+3rV1a98VSFK/qoyaliRJkhYdG2RJkiR1ouuo6SSHJdl3W6+zQZYkSVJXuo6aPgywQZYkSdJY2+6o6SRLkpyS5NomRvq1zfhLk3wpydVJPppkeZLfAA4FTmh2rXjosAXaIEuSJGkkhknSY25R0yuBPatqvyZG+v3N+NlV9fiqegxwA/CSqvo8g0CS1zfR0l8f9nO4zZskSZJGYpgkvaq6JskKZoiaTnIrU0dN3wTsneTdwCeBTzfj+yV5C7A7sCtwwXZ+BMAZZEmSJHVvImp6uvXFd0ZNN8sj1ib5q6r6IfAYBvsmvwz4p+b8U4BXNrPK/xtYNpfinEGWJElS17YrajrJHsCmqvpokhuBiR0x7gl8N8mODCKmb27Gf8wQ0dKTOYMsSZKkTs0hanpP4KIkaxk0x29sxv8/BmuZLwW+3Dr/DOD1Sa7alpv0TNLTUHbeefyT9H76074rmNmyOf2wZ/6N+9dPkjT+TNKTJEmSFiEbZEmSJM27JBcmecaksdck+ZckG1s3461N8vvN8W8m+Wjr/Bc2+yC/uHXupmZP5LVJjh9Frd6kJ0mSpC6cDhzB3bdgOwL4M2Cvqlo5zXX7J9m3qq6fGKiq99PsgZzkm8BTquoHoyrUGWRJkiR14SPAs5PsBNDshfxA4NuzXPd2mvjprtggS5Ikad5V1S3A5cAzm6EjgLOAAh46aYnFQa1LzwIel+RhXdVqgyxJkqSRGCJqemKZBc2vE0EhX2/ioCcel7Su2QKcwF1bus071yBLkiRpJIaImv448I4kjwOWV9UVzVKL2XyQQYN87dyrnJ0zyJIkSepEVW0ALmSQpDddzPRU1/0MeAfw2nkq7W5skCVJktSl04HHcPcGefIa5FdPcd376Gj1g0l6GopJenNnkp4kabFbLEl6rkHWUDZv7ruChc+voSRJC4NLLCRJkqQWG2RJkiR1JslxSa5Lck2z3viAJBcluTHJ1UkuTbJPc+7E+MTa5Bd2UaNLLCRJktSJJL8OPAd4XFXdkWQPYKfm8JFVNbF38gnAoe3xLut0BlmSJEldeQDwg6q6A6CqflBV35l0zsVAZ6l5U7FBliRJ0kgMkaT3aWCvJF9J8g9JnjzF2zwXWNd6fVpricV95634Frd501B23HH8t3kb910ilo75gqZx//pJksbfMNu8JVkCHAQ8BfhD4FjgaAazyxuBbwKvqqpvJ7kIeF3XSyzG/K9sSZIkLSZVtQW4CLgoyTrgqOZQ52uNp+MSC0mSJHUiyT5JHt4aWgl8q6dypuUMsiRJkrqyK/DuJLsDm4GvAccAH+mzqMlcg6yhJOO/BnncuQZZkrTYLZaoaZdYSJIkSS02yJIkSerMtiTpNeefk+SLXdZogyxJkqROTErSezTwm8C3m8NHVtVjgFMZJOnRrFXeH9gtyd5d1WmDLEmSpK5sa5LeC4BPAGcAR3RVpA2yJEmSurKtSXqrgdObx+qOarRBliRJ0mjMFjVdVRsYLJk4Bvg+cGaSo5vDpyVZCzwReF2S+wEPB/69qr4C/CzJfp18Drd50zDc5m3u3OZNkrTYbes2b0leyCBJ755MipRO8irgLcAPm6F7Ae+tquNGVO60nEGWJElSJ7YxSW81cEhVraiqFQxmnjtZh2yDLEmSpK7sCpya5Pok1wD7Am+efFKSFcCDgTu3d6uqbwA/SnLAfBfpEgsNxSUWc+cSC0nSYrdYkvTG/K9safGwAZUkaWFwiYUkSZLU4gyyJEmSOpFkC4M9jpcCNwBHVdXt0433VaczyJIkSerKxqpaWVX7AZuAl80y3gsbZEmSJPXhEu6KlB5mvDM2yJIkSRqJ2ZL0WuctBZ7JXZHSM453zW3eNBS3eZMkSbOZbZu31lpjGMwU/2lVbZpufP4qnZkNsoZigyxJkmYzRIO8oap2HXa8Ly6xkCRJklpskCVJkqQWl1hoKC6xmDujpiVJi91iiZp2BlmSJElqsUGWJElSJ5LcL8k/J7kpyRVJvpDk+UkOTvKjJGtbj99srqkkb2+9x+uSvHma998wijptkCVJkjTvkgQ4B7i4qvauqv2BI4AHNadc0qTpTTw+24zfAbwgyR5d1WqDLEmSpC48FdhUVf84MVBV36qqd89y3WbgJOC1kw8keUgzC70uyVtGVagNsiRJkrrwSODKGY4fNGmJxUNbx94DHJlkt0nXvAt4b1U9CvjuqAq1QZYkSdJIDBs13Zz7niRXJ/lSMzR5icXXJ86tqtuADwCvnvQ2TwROb55/cFSfY8w3npIkSdJCUVUnMVgOMZXrgN9unfuKZl3xmiHf/p0MZqDfP/m33cYyZ+UMsiRJkrrwOWBZkj9qjS0f9uKqugU4C3hJa/hSBjf6ARw55wobNsiSJEmadzVIpzsMeHKSbyS5HDgVeENzyuQ1yC+c4m3eDrR3s/hj4BVJ1gF7jqpWk/Q0FJP05s4kPUnSYrdYkvTG/K9safHYurXvCiRJ0jBcYiFJkiS12CBLkiSpEzNFQSd5Z5Kbk+yQ5FGttci3NGuW1yb57HTXj5JLLCRJktSrJDsAzwe+DTy5qi4EVjbHTgHOq6qPdFWPM8iSJEnq28EM9kl+L7C631JskCVJkjQi25KkN8lqBol4HwOenWTH+atydi6xkCRJ0kjMkqQ3pSQ7Ac8C/qSqfpzkMuAZwHnzUOJQbJAlSZLUp2cAuwPrksAgXW8jNsiSJEn6BbUa+F9VdTpAkl2AbyRZXlW391GQa5AlSZLUleVJ1rcefw4cAnxy4oSq+gnw78Bz+yrSqGkNxahpSZI0m8USNe0MsiRJktRigyxJkqTOJDksSSV5RJLLmoS8/0jy/VZ63ook30zy0dZ1L2xCQ+adN+lJkiSpS6sZrDFeXVUHACQ5GlhVVa+cOKnZ0WL/JPtW1fVdFugMsiRJkjqRZFfgQOAlwBFDXPJ24Lh5LWoKNsiSJEkaiSGS9J4HfKqqvgL8d5L9Z3nLs4DHJXnYvBQ8DZdYSJIkaSSGSNJbDbyreX5G8/qKGc7fApwAvBH4l1HUOAwbZEmSJM27JPcBngo8KkkBS4BK8vpZLv0ggwb52nku8U4usZAkSVIXXgh8sKoeXFUrqmov4BvAQTNdVFU/A94BvLaDGgEbZEmSJHVjNfCxSWMfbcZn8z46XPlgkp6GYpKeJEmazWJJ0nMNstSRnXbqu4KZbdrUdwWSJI0Hl1hIkiRJLTbIkiRJ6kQTMf2h1uulTcT0ec3roydFTq9Nsm8TPb0xyVVJbkhyeZO+Ny9cYiFJkqSu/ATYL8nOVbUReDpw86RzzmxHTgMkWQF8vaoe27zeGzg7Sarq/aMu0hlkSZIkdel84NnN89XA6dv6BlV1E/AnwKtHWNedbJAlSZI0EkNETcMgQe+IJMuARwOXTTp++KQlFjtP89tdCTxihOXfySUWkiRJGokhoqapqmuaJROrGcwmTzbVEoup3mretpSzQZYkSVLXzgXeBhwM3Hc73+OxwA2jKqjNBlmSJEldOxm4tarWJTl4Wy9uZqDfBrx7tGUN2CBLkiSpU1W1HjhxmsOHJzmw9frlwHeAhya5ClgG/Bg4sapOmY/6jJrWUIyaliRJs1ksUdPuYiFJkiS12CBLkiSpEzMl6SV5cWtrt01J1jXPj28S9rYmeXTr2mubtcgjZ4MsSZKkrtyZpNe8vjNJr6reX1Urq2olgzXHT2leH9ucux44rosibZAlSZLUpe1N0jsPeGSSfealqhYbZEmSJI3EiJL0prMV+Dvgz0dU7rTc5k2SJEkjMaIkvZn8M3BckodsX4XDsUGWJElS17YrSa+qNid5O/CGeaoLsEGWJElS9+aSpHcK8GfAPUdc051cgyxJkqROVdX6qpouSW+2azcxSOH75dFWdReT9DQUk/QkSdJsFkuSnkssNJQdFsDPGrZu7buCmS1f3ncFM7v99r4rkCRpPCyAtkeSJEnqjg2yJEmSOpFkQ/PriiTXTnH8lCS3J7lna+ydTUT1Hl3VaYMsSZKkcfI14HkASXYAnkoTR90VG2RJkiSNkzOAw5vnBwOXApu7LMAGWZIkSSMxZNT0bL4C/FKSezNI2ztjtFXOzl0sJEmSNBLDRE0P6WzgCOAA4A9H8H7bxAZZkiRJ4+ZM4Arg1KramnS7vbINsiRJksZKVX0ryXHAZ/v4/W2QJUmS1Id9kqxvvX5t+2BV/b+O67mTUdMailHTczfuaYTjnkQoSRp/iyVqesz/ypYkSZK65RILSZIkdSLJFmAdgx70G8DvARcA9wDuA+zMXaEgh1XVN3so0yUWGo5LLObOJRaSpMVutiUWSTZU1a7N81OBr1TV3zSvjwZWVdUr573QWYz5X9mSJElapL4A7Nl3EVOxQZYkSdJIDJukl2QJ8DTg3G4rHI5rkCVJkjQSQyTp7ZxkLYOZ4xuAz3RR17ZyBlmSJEld2VhVK4EHAwFe0W85U7NBliRJUqeq6nbg1cCfJhm7FQ02yJIkSepcVV0FXAOs7ruWydzmTUNxm7e5c5s3SdJit1iS9MZuSltarGxAJUlaGMZ8TkuSJEnqlg2yJEmSOpHkfkn+OclNSa5I8oUkz09ycJIfJVnbevxmc00leXvrPV6X5M3zWacNsiRJkuZdkgDnABdX1d5VtT9wBPCg5pRLqmpl6/HZZvwO4AVJ9uiqVhtkSZIkdeGpwKaq+seJgar6VlW9e5brNjMIH3ltezDJbkm+lWSH5vUuSb6dZMe5FmqDLEmSpJGYJWr6kcCVM1x+0KQlFg9tHXsPcGSS3SYGqupHwFrgyc3Qc4ALqupnc/0c7mIhSZKkkRgiavpOSd4DHAhsAl7PYInFc6Z539uSfIBBuMjG1qEzgcOBCxks1/iH7a/+Ls4gS5IkqQvXAY+beFFVrwCeBvzSkNe/E3gJsEtr7FzgkCT3AfYHPjeKQm2QJUmS1IXPAcuS/FFrbPmwF1fVLcBZDJrkibENwJeAdwHnVdWWURRqgyxJkqR5V4P45sOAJyf5RpLLgVOBNzSnTF6D/MIp3ubtwOTdLM4Efrf5dSSMmtZQjJqWJEmzWSxR084gS5IkSS02yJIkSepEki2TllEc24xflOTGJFcnuTTJPq3xVV3X6TZvkiRJ6srGqlo5zbEjq2pi7+QTgEO7K+vunEGWJEnSOLkYeFifBdggS5IkaSRmSdID2HnSEovDp3ib5wLrOih3Wi6xkCRJ0kgMkaQ30xKL05JsBL4JvGrEpW0TG2RJkiSNgyOrak3fRYBLLCRJkqS7cQZZkiRJXdk5ydrW609V1bF9FTMdk/Q0FJP0JEnSbEzSkyRJkhYhG2RJkiSpxTXIkiRJ6kSSLQz2OF4K3AAcBXwSOL6qLmid9xpgH+Ba4KWtt1gKPBLYt6pumLc6XYOsYbgGWZIkzWa2NchJNlTVrs3z04ArgA3Ar1fVi1vnfRH4s6q6eNL1bwV+pap+d+TFt7jEQpIkSX24hEGk9EeAZyfZCSDJCuCBzfE7JXkS8DvAy+e7MBtkSZIkjcQQUdMT5y0Fngmsq6pbgMub1wBHAGdVa5lDkt2BU4Cjquq2+fwM4BILDcklFpIkaTZDLLGYWIMMgxniP62qTUmOBJ5TVaubfZJfUlVXtK47A7ixqv5ynkq/e502yBqGDbIkSZrNtqxBnjS+K3ATcAhwRlX9auvYUcDLgIOqavOIS56Su1hIkiSpV1W1IcmFwMnA6RPjSfYG3kqHzTHYIEuSJGk8nA58jMEa5AlvAJYDZyd3m5x+VVXd7Sa+UXKJhYbiEou522HMb4ndurXvCiRJC51R05IkSdIiZIMsSZKkTiTZkmRtkmuTfDjJ8iQXJnnGpPNek+S9SVYk2dhcc32SDyTZcb7rtEGWJElSVzZW1cqq2g/YxGB3itO5+7pjmtcTN+t9vapWAo8CHsQgLGRe2SBLkiSpD9uUpFdVWxgEiuw534XZIEuSJGkk5itJr7lmGXAA8Kn5+wTN7+UuFhqGu1jMnbtYSJIWu1En6TWzyTcANwIPAT5ZVf9z3j5Aw32QJUmS1JWNzXriyT4OvCPJ44Dl7ZhpmjXISfYALk1yaFWdO59FjvmcliRJkha7qtoA/FyS3qRzfgAcC7xxvuuxQZYkSdI4OB14DNM0yI1zgOVJDprPQlyDrKG4BnnuXIMsSVrsFkuSnmuQNZRxb+5g/Bu8+9yn7wpm9oMf9F2BJEnjYQG0PZIkSVJ3bJAlSZLUiSSV5EOt10uTfD/Jec3ro5vXa1uPfZO8YtLYtc17/Y/5qNMlFpIkSerKT4D9kuxcVRuBpwM3TzrnzKp65aSx64H3TLxI8lZgbVXdMB9FOoMsSZKkLp0PPLt5vpqZd634OUmeBPwO8PIR13UnG2RJkiSNxJBR02cARzTR0Y8GLpt0/PBJyyl2br3/7sApwFFVdds8fQyXWEiSJGk0quok4KRZzrmmiZBezWA2ebKpllhM+Efgg1V16ZwKnYUNsiRJkrp2LvA24GDgvsNckOQo4MHA785fWQM2yJIkSeraycCtVbUuycGznZxkb+CtwEFVtXmea7NBliRJUreqaj1w4jSHD09yYOv1y4GjgOXA2cndwvpeVVWXjLo+o6Y1lB13HP+o6c3z/u/JuTnwwNnP6dO//3vfFUiSFrrFEjXtLhaSJElSi0ssJEmS1IkkG6pq10ljFwD3aw39MvDtqjqg0+JabJAlSZLUm6p6xsTzJLsAVwB/0V9FLrGQJEnS+HgXcH5VfabPIpxBliRJ0kg0yXnt9LyTmvCQYa59AbAK6G1pxQQbZEmSJI3EMEl6U0myJ4PZ42dU1R0jL2wbucRCkiRJvclgY+NTgeOr6vq+6wEbZEmSJPXrdcBPq+o9fRcywSUWkiRJ6sryJOtbr/8eeAuwPsna1vgPq+opnVbWYoMsSZKkTlTVVKsX/r7zQmZhg6yhLF/edwWz27Ch7wpmtmxZ3xVIkqRhuAZZkiRJarFBliRJUieSVJIPtV4vTfL9JOc1r49uXq9Ncl2SjyTp/OfYNsiSJEnqyk+A/ZLs3Lx+OnDzpHPOrKqVVfVIYBNweJcFgg2yJEmSunU+8Ozm+Wrg9KlOSrIU2AX4YfP6RUmuTXJ1koubsSVJTkjypSTXJPnDZvzgJBc1M9BfTnJas9/yUGyQJUmSNBJJjkmypvU4ZorTzgCOSLIMeDRw2aTjhzdbvt0M3Af4RDP+JgZJe48BDm3GXgL8qKoeDzweeGmShzTHHgu8BtgX2Bt44rCfwwZZkiRJI1FVJ1XVqtbj52Knq+oaYAWD2ePzp3ibM6tqJXB/YB3w+mb8UuCUJC8FljRjvwX8ftNQXwbcF3h4c+zyqlpfVVuBtc3vORQbZEmSJHXtXOBtTLO8AqCqisHs8ZOa1y8D/gLYC7giyX2BAK9q1iyvrKqHVNWnm7e4o/V2W9iG7Y1tkCVJktS1k4H/XVXrZjnvQODrAEkeWlWXVdWbgO8zaJQvAP4oyY7NOb+aZJe5FmdQiCRJkjpVVeuBE6c5fHiSAxlM5K4Hjm7GT0jycAazxv8KXA1MLNe4srkJ7/vAYXOtL4PZa2lm++zD2H+j3HJL3xXM7Kab+q5gZve6V98VzOz+9++7gtn953/2XcHCthASO2+/ve8KpPFWxdA7RYwzl1hIkiRJLTbIkiRJ6kSfSXpJ/nzYc22QJUmS1JU+k/RskCVJkjSWtjdJ75Qk703yxSQ3NWl5Jye5IckpretWJ1nXpO79bTN2PLBzMzN92mwF2iBLkiRpJOY5SQ/g3sCvA69lsJfyO4BHAo9KsjLJA4G/BZ4KrAQen+SwqjoW2NjMTB852+ewQZYkSdJIzHOSHsAnmgCRdcB/VdW6JinvuuY9Hw9cVFXfr6rNwGk0QSPbwgZZkiRJXdvmJL3GRDreVu6elLeVEeZ72CBLkiSpa9ucpDeky4EnJ9kjyRIGs9T/1hz72UTi3mxM0pMkSVKntjNJb5j3/W6SY4ELGSTufbKqPt4cPgm4JsmVs61DNklPQ0nGP0lv3N3nPn1XMLNxTyLcYQH8vGvr1r4rWNj8bywtfCbpSZIkSYuQDbIkSZI6MeokvWZrt2eNuk4bZEmSJHVl1El6KwEbZEmSJC1o25uk96ImHe/qJBcn2Qn4K5pgkSSHJ3lCki8kuSrJ55Pssz0F2iBLkiSpS9ubpPcm4BlV9Rjg0Kra1IxNzDifCXwZOKiqHtsce+v2FGiDLEmSpJEYJmp6Dkl6lwKnJHkpsGSaEnYDPpzkWu6Kod5mNsiSJEkaiWGiphvbnKRXVS8D/gLYC7giyX2nuOyvgQuraj/gucCy7fkcBoVIkiSpaycDt1bVuiQHz3DenUl6SR5aVZcBlyV5JoNG+cfAPVvn78ZdN/0dvb3FOYMsSZKkTlXV+qqaKUlvbZJrgMcymBUGOCHJumb5xOeBqxkk5u07cZMe8HfA/0lyFXOYCDZJT0MxSW/uTNKbG1PWFj//G0sL32JJ0nOJhdSRX/mVviuY2bg3yMu2axVZt26/ve8KFrYXvrDvCmb3qU/1XcHMxv17cPPmviuQhrMA/r0uSZIkdccZZEmSJHUiyRYGW7ctBW4AjqqqsfvZhzPIkiRJ6srGJtRjPwYx0i/ru6Cp2CBLkiSpD5cAD5s8mOTVSa5Pck2SM5qxXZKcnOTyJkb6ec340UnOTvKpJF9N8nejKMwlFpIkSRqJJjmvnZ530lRhIUmWAs8Eprr19VjgIVV1R5Ldm7HjgM9V1R80Y5cn+WxzbCWD7eDuAG5M8u6q+vZcPocNsiRJkkaiaYanS88D2DnJ2ub5JcD7pjjnGuC0JOcA5zRjvwUcmuR1zetlwMT+UP9aVT8CSHI98GDABlmSJEkLwsaqWtkeSPJ+BjPA36mqZwHPZhAv/VzguCSPAgL8dlXdOOnaAxjMHE/Ywgj6W9cgS5IkqTdV9eLmxr1nJdkB2KuqLgTewCA6elfgAuBVSQKQ5LHzWZMzyJIkSRoXS4APJdmNwazxiVV1a5K/Bt4JXNM00d8AnjNfRRg1raEYNT13T3pS3xXM7OKL+65gZr/8y31XMLvvfa/vCha2Rzyi7wpm95Wv9F3BzIzCVt8WS9S0SywkSZKkFhtkSZIkdSLJliRrk1yb5MNJlo/4/XdP8vK5vo8NsiRJkroy30l6uwM2yJIkSVqQpkvSuyjJO5KsSXJDksc3aXlfTfKW1nl/0sxEX5vkNc3w8cBDm1nqE7a3MHexkCRJUqdmSdID2FRVq5L8MfBxYH/gFuDrSd4BrABeDBzAYLeLy5L8G4MUvv0m77W8rZxBliRJ0kgkOaaZ+Z14HDPplIkkvTXAfzB1kh7Auc2v64Drquq7VXUHcBOwF3Ag8LGq+klVbQDOBg4a1edwBlmSJEkjMUTU9DBJenBXOt5W7p6Ut5UO+ldnkCVJktSbdpLeNlx2CXBYkuVJdgGe34z9GLjnXGuyQZYkSdKCUlVXAqcAlwOXAf9UVVdV1X8DlzY37m33TXom6WkoJunNnUl6c2OS3uJnkt7cmaSnvi2WJD3XIEsd+eY3+65gYduwoe8KNN/GvfkEG1DpF4VLLCRJkqQWG2RJkiR1YtRR00lWJtmWm/uGYoMsSZKkrow6anolYIMsSZKkRWG6qOlXJ7k+yTVJzmjGnpDkC0muSvL5JPsk2Qn4K+DwZlb68FEV5k16kiRJGokmOa+dnndSEx4y+byZoqaPBR5SVXck2b0Z+zJwUFVtTvKbwFur6reTvAlYVVWvHOXnsEGWJEnSSAyRpDcRNQ2DGeSpoqavAU5Lcg5wTjO2G3BqkocDBew4inqnY4MsSZKkrgwTNf1s4EnAc4HjkjwK+Gvgwqp6fpIVwEXzWaQNsiRJknpTVS+eeJ5kB2Cvqrowyb8DRwC7MphBvrk57ejW5SOJlp7Mm/QkSZI0LpYAH0qyDrgKOLGqbgX+Dvg/Sa7i7hO8FwL7jvomPaOmNZR73nP8o6aXz2knxfl3++19VzCzzZv7rmBmO+3UdwWzu+22viuY2dIx/5nh/e/fdwUL373u1XcFM7v++r4r0HxbLFHTziBLkiRJLTbIkiRJ6kSSSvKh1uulSb6f5Lwkj0zylSQ7t45/Msnqruu0QZYkSVJXfgLs12qCn05z811VXQecDRwHkOQwYMeqOr3rIm2QJUmS1KXzGWzlBrAaaDfAfwW8KMlK4HjgFe0LkyxJckqSa5OsS/LaZvyhST6V5IoklyR5RDN+SpITm/S9m5K8cJgCbZAlSZLUpTOAI5IsAx4NXDZxoKpuB14HXAycUVVfnXTtSmDPqtqvqh4FvL8ZPwl4VVXt31z/D61rHgAcCDyHQdM9qzG/p1mSJEkLxTBR01V1TRP2sZrBbDKTjn8iya3cvcmdcBOwd5J3A58EPp1kV+A3gA8nd26icY/WNedU1Vbg+iT3G+Zz2CBLkiRpJIaImp5wLvA24GDgvlMc3wpsTbIEuGLimqp6U5LHAM8AXgb8DvAa4NbJCX0td7SeD7UNnQ2yJEmSunYyg6Z2XZKDpzupqrYwWFYBQJI9gE1V9dEkNwIfqqrbknwjyYuq6sMZTCM/uqqu3t7ibJAlSZLUqapaD5y4HZfuCby/iaQGeGPz65HAe5P8BbAjg3XO290gm6SnoZikN3cm6c2NSXpzZ5Le4meSnvq2WJL0bJA1lCVLxr9BXras7wpm9rrX9V3BzN761r4rmNmTntR3BbP73Of6rmBmO4z5vkX/9//2XcHsPvKRviuY2cUX913BzLZu7buCmY37/yMw/pMZi6VBXgDfCpIkSVJ3bJAlSZLUib6jppOsTPKs2c6zQZYkSVJX+o6aXgnYIEuSJGmsbHfUNECSDUlOSHJdks8meUKSi5oo6UObc5YleX8TR31Vkqck2al5/8OTrE1y+HQF2iBLkiRpJJIck2RN63HMFKfNJWoaYBfgc1X1SODHwFsYzEQ/n0EDDIPGupo46tXAqQz63jcBZ1bVyqo6c7rPMeab/kiSJGmhGCZJb45R0wCbgE81z9cBd1TVz5KsA1Y04wcC727e78tJvgX86rCfwxlkSZIkdW0ianq69cV3Rk03yyHWJpmYHf5Z3bVP8VaaKOmq2sqIJn+dQZYkSVLXtitqehtcwiBd73NJfhX4FeBG4OHAPWe72BlkSZIkdaqq1lfV9kRND+sfgB2aZRdnAkdX1R3AhcC+s92kZ5KehpKMf5KeJEnql0l6kiRJ0iJkgyxJkqROdJ2kl+SwJPtu63U2yJIkSepK10l6hwE2yJIkSRpr252k12z7dkqSa5uUvNc24y9N8qUkVyf5aJLlSX4DOBQ4obkp76HDFmiDLEmSpC7NJUlvJbBnVe3XpOS9vxk/u6oeX1WPAW4AXlJVn2ew3/Lrm+S8rw9boA2yJEmSRmKYqOmquoZB4t20SXrArUydpHcTsHeSdyc5BLitGd8vySXNtm5HAo+cy+cwKESSJEkjMUzUdGMiSe9g4L5THL8zSQ+4YuKaqnpTkscAzwBeBvwO8AfAKcBhVXV1kqOb991uNsiSJEnq2nYl6SXZA9hUVR9NciMwsSPGPYHvJtmRwQzyzc34jxkiOW8yl1hIkiSpU3NI0tsTuCjJWgbN8Rub8f+PwVrmS4Evt84/A3h9kqu25SY9k/Q0FJP0JEnSbBZLkp4NsnqR5JhmndLYGvcarW/uxr1G65ubca8Pxr9G65u7ca9x3Ovri0ss1Jefu6t1DI17jdY3d+Neo/XNzbjXB+Nfo/XN3bjXOO719cIGWZIkSWqxQZYkSZJabJDVl4Ww3mnca7S+uRv3Gq1vbsa9Phj/Gq1v7sa9xnGvrxfepCdJkiS1OIMsSZIktdggS5IkSS02yOpFkiVNqs15fdcyWZJvJlmXZG2SNX3XM5Ukuyf5SJIvJ7khya/3XdOEJMuSXJ7k6iTXJfnfY1DTyUm+l+TaKY79aZJq4kt7M1WNSV7UfA23Jlk1hvWd0HwPXpPkY0l277HEu0ny2uZrd22S05Ms67umCUn2af58mXjcluQ1fdfVluSPm6/ddeNS2zTfg3/dfP+tTfLpJA/ss8YJM/2ZMw6S7JXkwiTXN/+N/7jvmsaNDbL68sfADX0XMYOnVNXKquq1KZnBu4BPVdUjgMcwXl/LO4CnVtVjgJXAIUl+rd+SOAU4ZPJgkr2A3wL+o+uCpnAKP1/jtcALgIs7r+bnncLP1/cZYL+qejTwFe6KfO1Vkj2BVwOrqmo/YAlwRL9V3aWqbmz+fFkJ7A/cDnys36rukmQ/4KXAExj8+fKcJA/rtypg6u/BE6rq0c3X8jzgTV0XNY1TmOLPnDGyGfjTqtoX+DXgFUn27bmmsWKDrM4leRDwbOCf+q5lIUqyG/Ak4H0AVbWpqm7ttaiWGtjQvNyxefR6N3BVXQzcMsWhdwB/Rs/1wdQ1VtUNVXVjTyXdzTT1fbqqNjcvvwg8qPPCprcU2DnJUmA58J2e65nO04CvV9W3+i6k5X8Al1XV7c1/339j8A+1Xk3zPXhb6+UujMH/yzDjnzljoaq+W1VXNs9/zGCSZc9+qxovNsjqwzsZNCVbe65jOgV8OskVScYxYeghwPeB9zfLVP4pyS59F9XWLKFZC3wP+ExVXdZzST8nyfOAm6vq6r5rWST+APiXvosAqKqbgbcx+MnAd4EfVdWn+61qWkcAp/ddxCTXAgcluW+S5cCzgL16rmlaSf4mybeBIxmfGeQFI8kK4LHA2P053ScbZHUqyXOA71XVFX3XMoMDq+pxwDMZ/NjpSX0XNMlS4HHAe6vqscBPgGP7LenuqmpL8yPPBwFPaH5kOzaav/T/HP8yHYkkxzH4ke1pfdcCkOTewPMY/GPygcAuSX6336p+XpKdgEOBD/ddS1tV3QD8LfBp4FPAWmBLnzXNpKqOq6q9GHz/vbLvehaSJLsCHwVeM2k2/heeDbK69kTg0CTfBM4AnprkQ/2WdHfN7BNV9T0G6wKf0G9FP2c9sL41K/sRBg3z2GmWflzI+K3FeyiD5unq5nvxQcCVSe7fa1ULUJKjgecAR9b4bKz/m8A3qur7VfUz4GzgN3quaSrPBK6sqv/qu5DJqup9VbV/VT0J+CGDNebj7jTgt/suYqFIsiOD5vi0qjq773rGjQ2yOlVVb6yqB1XVCgY/WvxcVY3NzE6SXZLcc+I5gxu4xuou5Kr6T+DbSfZphp4GXN9jSXeT5JcmdjNIsjPwdODLvRY1SVWtq6pfrqoVzffieuBxzddWQ0pyCIPlUodW1e1919PyH8CvJVmeJAz+HxmnG1knrGb8llcAkOSXm19/hcH643/ut6KpJXl46+XzGLM/a8ZV8//F+4Abqurv+65nHC3tuwBpzNwP+Njgzw6WAv9cVZ/qt6QpvQo4rfkR7U3Ai3uup+0BwKlJljD4R/hZVdXrdn5JTgcOBvZIsh74y6p6X581TTZVjQxu8nk38EvAJ5OsrapnjFF9bwTuAXym+X/mi1X1sj7qa6uqy5J8BLiSwdKPqxizON3mH+BPB/6w71qm8dEk9wV+BrxiHG4EnuZ78FnNZMFW4FtA799/sCD+zHki8HvAuuZ+EYA/r6rz+ytpvBg1LUmSJLW4xEKSJElqsUGWJEmSWmyQJUmSpBYbZEmSJKnFBlmSJElqsUGWJEmSWmyQJUmSpJb/H5pDbWhqEDMTAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 720x720 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "import Visual as nv\n",
    "import json\n",
    "#In[1] subtype symmetry\n",
    "import BrainRegion as BR \n",
    "import pandas as pd\n",
    "import seaborn\tas sns\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "br = BR.BrainRegion()\n",
    "br.praseJson()\n",
    "# region=[['VENT','SPF','SPA','PP','GENd','LAT','ATN','MED','MTN','ILM','RT','GENv','EPI'],['PVZ','PVR','MEZ','LZ'],['MBsen','MBmot','MBsta'],['P-sen','P-mot','P-sat','MY-sen','MY-mot','MY-sat']]\n",
    "region=['VENT','SPF','SPA','PP','GENd','LAT','ATN','MED','MTN','ILM','RT','GENv','EPI','PVZ','PVR','MEZ','LZ','MBsen','MBmot','MBsta','P-sen','P-mot','P-sat','MY-sen','MY-mot','MY-sat']\n",
    "df = pd.DataFrame()\n",
    "neurons =[]\n",
    "clusterBilateral={}\n",
    "for i in range(1,15):\n",
    "    if i==10:\n",
    "        continue\n",
    "    scenefile='../resource/scene/cluster'+str(i)+'_spcd20220628_spcd.nv'\n",
    "    neurons= Scene.scene2List(scenefile)\n",
    "    propmean=None\n",
    "    bilateralCount=0\n",
    "    for neuron in neurons:\n",
    "        # if not isBilateral(neuron)[0]:\n",
    "        #     continue\n",
    "        bilateralCount+=1\n",
    "        brproperty=BR.RegionProperty(copy.deepcopy(br))\n",
    "        brpropertyLeft=BR.RegionProperty(copy.deepcopy(br))\n",
    "        brpropertyRight=BR.RegionProperty(copy.deepcopy(br))\n",
    "        property = iondata.getNeuronPropertyByID(neuron['sampleid'], neuron['name'])\n",
    "        brproperty.setProperty(property['projectregion'])\n",
    "        brpropertyLeft.setProperty(property['projectleftregion'])\n",
    "        brpropertyRight.setProperty(property['projectrightregion'])\n",
    "        prop=[]\n",
    "        for reg in region:\n",
    "            leftLength = brpropertyLeft.getSumProperty(reg)\n",
    "            prop.append(leftLength)\n",
    "        for reg in region:\n",
    "            rightLength = brpropertyRight.getSumProperty(reg)\n",
    "            prop.append(rightLength)\n",
    "        if propmean is None:\n",
    "            propmean=np.array(prop)\n",
    "        else:\n",
    "            propmean+=np.array(prop)\n",
    "    if bilateralCount:\n",
    "        propmean = propmean/bilateralCount\n",
    "        clusterBilateral[i]=bilateralCount\n",
    "        df[str(i)]=propmean\n",
    "df.index=pd.Series(region+region)\n",
    "df.to_csv(\"../resource/symmetry.csv\")\n",
    "sns.clustermap(df, fmt=\"d\",metric='euclidean', cmap='bwr', method='average',xticklabels=True,yticklabels=True,row_cluster=False)\n",
    "plt.show()\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.lines.Line2D at 0x23a62ca8e48>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "leftsum = df[:][0:26].sum()\n",
    "allsum = df[:][:].sum()\n",
    "ratio= leftsum/allsum\n",
    "sortedRatio = ratio.sort_values()\n",
    "ratiodf = pd.DataFrame(sortedRatio)\n",
    "ratiodf =ratiodf.reset_index()\n",
    "ratiodf.columns=['Cluster','Ratio']\n",
    "\n",
    "ratiodf.plot.scatter(x='Cluster',y='Ratio')\n",
    "plt.axhline(0.5)\n",
    "# ratiodf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='Left', ylabel='Right'>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "leftsum = df[:][0:26].sum()\n",
    "rightsum = df[:][26:52].sum()\n",
    "leftrightdf = pd.concat([leftsum, rightsum], axis=1)\n",
    "leftrightdf.columns=['Left','Right']\n",
    "\n",
    "leftrightdf.plot.scatter(x='Left',y='Right')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(69.0, 0.5, 'Regions')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 720x720 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "df1 = df.apply(lambda x: x/x.max() if x.max()>0 else x, axis=1)\n",
    "for index in df1.columns:\n",
    "    if df1[index][0:26].sum()<0.1 or df1[index][26:52].sum()<0.1:\n",
    "        df1 = df1.drop([index], axis=1)\n",
    "\n",
    "# df1=(np.log2(df/10+1))\n",
    "# df1=df\n",
    "# print(df)\n",
    "# fig = sns.clustermap(df1, fmt=\"d\",metric='euclidean',cmap='bwr',  method='average',xticklabels=True,yticklabels=True,row_cluster=False)\n",
    "fig,ax = plt.subplots(figsize=(10,10))\n",
    "sns.heatmap(df1, fmt=\"d\",cmap='bwr',linewidth=1)\n",
    "plt.xlabel('Cluster')\n",
    "plt.ylabel('Regions')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['1', '2', '3', '4', '5', '6', '8', '12', '13', '14'] [0.02457837418775177, 0.1813922891685099, 0.07673341313940688, 0.3581500461117903, 0.29908413376959564, 0.21096562339015126, 0.9073502773169771, 0.580133329171824, 0.3081818750056152, 0.644832051551004]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Spearman’s rank correlation coefficient')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from tokenize import Name\n",
    "import scipy.stats as stats\n",
    "def ComputeRs(a, b):\n",
    "    aa = np.column_stack((a, b))\n",
    "    # rank的方式有很多种，这里使用的average的方式\n",
    "    aa_ranked = np.apply_along_axis(stats.rankdata, 0, aa)\n",
    "    rs = np.corrcoef(aa, rowvar=0)\n",
    "    return rs[1, 0]\n",
    "\n",
    "data = np.array(df1)\n",
    "\n",
    "index=[]\n",
    "rs =[]\n",
    "for i in range(data.shape[1]):\n",
    "    # print(df1.columns[i],\"  \")\n",
    "    left = data[0:26,i]\n",
    "    right = data[26:52,i]\n",
    "\n",
    "    # a_z_idx = [~(left != 0)]\n",
    "    # b_z_idx = [~(right != 0)]\n",
    "    # ab_z_idx = a_z_idx[0] & b_z_idx[0]\n",
    "    # left= left[~ab_z_idx]\n",
    "    # right = right[~ab_z_idx]\n",
    "    \n",
    "    # print('delete',left,right)\n",
    "    # print(np.mean(np.multiply((left-np.mean(left)),(right-np.mean(right))))/(np.std(left)*np.std(right)))\n",
    "    # print(\"ncc\",np.mean(np.multiply(left,right))/(np.linalg.norm(left)*np.linalg.norm(right)))\n",
    "    # print(ComputeRs(left.tolist(), right.tolist()))\n",
    "    index.append(df1.columns[i])\n",
    "    rs.append(ComputeRs(left.tolist(), right.tolist()))\n",
    "    # print(i+1,coef, p)\n",
    "\n",
    "df2 = pd.DataFrame({'name':index, 'rs':rs})\n",
    "print(index,rs)\n",
    "# plt.xticks(x,index)\n",
    "# plt.scatter(x, rs)\n",
    "df3 = df2.sort_values(by='rs')\n",
    "x=[]\n",
    "index=np.array(df3['name'])\n",
    "rs =np.array(df3['rs'])\n",
    "for i in range(len(df3)):\n",
    "    x.append(i)\n",
    "fig = plt.figure()\n",
    "ax = fig.gca()\n",
    "ax.set_xticks(np.arange(0, 13, 1))\n",
    "ax.set_yticks(np.arange(0, 1., 0.1))\n",
    "plt.xticks(x,index)\n",
    "plt.grid()\n",
    "plt.scatter(x, rs)\n",
    "plt.xlabel('Cluster')\n",
    "plt.ylabel('Spearman’s rank correlation coefficient')\n",
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.8.3 ('neuronVis')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3 (default, Jul  2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)]"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "e1da01a652087c3f485a2a8b69806c32fa3b3acf94bcdc0c1ef74e2af5cc794e"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
